1
プロジェクト設計図:Rustで作るグレップツールの構築
AI034Lesson 12
00:00

Rustの世界では、堅牢なCLIツールは単なるスクリプトではなく、丁寧に設計された プロジェクト設計図。例えば grepのようなツールを構築するには、 バイナリクレートライブラリクレートの間で作業を分担します。

1. コーヒーマシンの比喩

高級コーヒーマシンを想像してみてください。 lib.rs には、水を加熱し豆を挽く内部機構が含まれており、これが「エンジンロジック」です。一方、 main.rs はユーザーが押す外部のボタンであり、「インターフェース」です。これらを分離することで、技術者は物理的なボタン(バイナリ)を毎回押さなくても、ヒーター(ライブラリ)のテストを行うことができます。

2. エンジンの基盤づくり

始めに $ cargo new minigrepというコマンドを使います。これにより main.rsが生成されますが、手動で src/lib.rsを導入する必要があります。このアーキテクチャ上の分割により、私たちの核心となる検索ロジックは 分離された状態 CLIのパースから切り離され、テストのしやすさとモジュール性を実現します。

バイナリクレートsrc/main.rs(「イグニッション」)ライブラリクレートsrc/lib.rs(「エンジン」)ロジック呼び出し

3. テスト可能なモジュール性

ロジックを lib.rsに移動することで、制御された環境でライブラリ関数を呼び出すためのRustのテストフレームワークを利用できます。バイナリでは use minigrep; を使ってエンジンをインポートしつつ、コマンドラインのパースロジックは分離したままにします。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>